<?php

namespace App\Commons\Domain\Module\Financial\Entity;

use App\Commons\Domain\Core\DomainEntity;
use App\Commons\Domain\Module\Financial\Model\Payment;

class PaymentEntity extends DomainEntity
{
    public const ENTITY = Payment::class;

    /**
     * 获取我的收款方式列表
     * @param string $uid
     * @return mixed
     */
    public function list(string $uid)
    {
        return $this->where('uid', $uid)->get();
    }

    /**
     * @param string $uid 用户uid
     * @param string $type 收款方式：1银行卡、2支付宝、3微信
     * @param string $name 姓名
     * @param string $bank_name 开户银行
     * @param string $bank_branch 开户支行(选填)
     * @param string $qr_code 支付宝/微信二维码地址
     * @param string $account 收款账户：银行卡号、支付宝账号、微信账号
     * @return mixed
     */
    public function storePayment(string $uid,string $type, string $name, string $bank_name, string $bank_branch, string $qr_code, string $account)
    {
        $data = compact('uid','type','name','bank_name','bank_branch','qr_code','account');
        return $this->create($data);
    }

    /**
     * @param Payment $payment payment模型
     * @param string $bank_name 开户银行
     * @param string $bank_branch 开户支行(选填)
     * @param string $qr_code 支付宝/微信二维码地址
     * @param string $account 收款账户：银行卡号、支付宝账号、微信账号
     * @return mixed
     */
    public function updatePayment(Payment $payment, string $bank_name, string $bank_branch, string $qr_code, string $account)
    {
        $payment->bank_name = $bank_name;
        $payment->bank_branch = $bank_branch;
        $payment->qr_code = $qr_code;
        $payment->account = $account;
        return $payment->save();
    }

    /**
     * 收款方式开关
     * @param Payment $payment 收款方式id
     * @param int $status 状态：0-关闭，1-开启
     * @return mixed
     */
    public function switchPayment(Payment $payment,int $status)
    {
        $payment->status = $status > 0 ? 1:0;
        return $payment->save();
    }

    /**
     * 删除收款方式
     * @param int $paymentId 收款方式id
     * @return mixed
     */
    public function remove(int $paymentId)
    {
        return $this->where('id', $paymentId)->delete();
    }
}
